package com.wuchao.mapper;

import com.wuchao.pojo.Users;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @Author wuchao66
 * @Date 2022/9/19 15:37
 * @PackageName:com.wuchao.mapper
 * @ClassName: UsersMapper
 * @Description: TODO
 * @Param
 * @Version 1.0
 */
public interface UsersMapper {//接口映射
    /*mybatis不支持重载*/
    //模糊查询根据名字
    public List<Users> findUsersByNameConcat(String name);
   // 访问修饰符 返回值类型  方法名 （入参）;
    //注解版
    @Update("update users set name=#{name} where id=#{id}")//jpa
   public int updateUsersByNameAndId(@Param("name") String name, @Param("id")int id);
    //增加
    public int insertUsersByUsers(Users users);
    //删除id
    public int removeUsersById(int id);
    //删除对象
    public int removeUsersByUsers(Users users);
    //增加
    public int insertUsersByNameAndPwdAndDate(
            @Param("name") String name,@Param("pwd")
            String pwd,@Param("date")  Date date);
    //map模糊查询
    public List<Users> findUsersByMapNameConcat(Map map);
    //借用现有表 借一半
    public List<Users> findInfo();
    //一人借一半，共借，而且够用
    public List<Users> findUsersAndManByManNameConcat(@Param("name") String name);
    //双表内联，不够借了，自己的列开始进来*********************//
    public List<Users> selectUsersAndManByManNameConcat(@Param("name") String name);
    //多表外联，不够借了，自己的列开始进来 而且为后期泛型集合类入参*********************//
    public List<Users> selectfindUsersAndManByManNameConcat(@Param("name") String name);
  //动态sql--表单 序列化 信息自动集成为一个对象入参
    public List<Users> findUserByNameConcatAndIdSql(Users users);
    //修改动态 id不能改，你除了id不变，把新的对象改了传过来
    public int updateUserByNameAndPwdSql(Users users);
    //增加sql
    public int insertUserByUsersSql(Users users);

    //多类型入参 in-查询数组入参1
    public List<Users> findUsersByNamesArrays(String [] names);//数组入参
    //多类型入参 in-查询 list入参2
    public List<Users> findUsersByNamesList(List<String> list);
    //多类型入参 in-查询 12 map list
    public List<Users> findUsersByNamesMap(Map<String,List<String>> map);

    //双表模糊分页的查询集合
    public List<Users> findUsersAndManBynameConcatByPage(@Param("name") String name);

    //双表分页模糊查询
    public List<Users> findUsersAndTypeBynameConcatByPage(String name);
}
